﻿using Prism.Ioc;
using Prism.Modularity;
using Core.Tools;
using Shell.Views;
using Shell.ViewModels;  // 添加这行
using System.Windows;
using Prism.Unity;

namespace Shell
{
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : PrismApplication
    {
        protected override Window CreateShell()
        {
            return Container.Resolve<MainView>();
        }

        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            // 注册 MainViewModel
            containerRegistry.Register<MainViewModel>();
        }

        protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
        {
            base.ConfigureModuleCatalog(moduleCatalog);
            //加载自己写的模块
            moduleCatalog.AddModule<CoreToolsModule>();//注册 CoreToolsModule 模块
        }
        
        protected override IModuleCatalog CreateModuleCatalog()
        {
            /*
             * 	自动发现模块：DirectoryModuleCatalog 会自动扫描指定目录中的所有程序集（.dll 文件）
               	模块识别：查找实现了 IModule 接口的类型
              	动态加载：在应用程序启动时自动加载这些模块
             */
            return new DirectoryModuleCatalog() { ModulePath= @".\Modules" };//设置模块所在的目录为当前程序目录下的 Modules 文件夹
        }

    }

}
